草庐IT

Android SurfaceView Canvas 用线程绘制

全部标签

c# - 主线程结束时线程不会终止

我有一个奇怪的问题:在我的C#应用程序中,我正在创建另一个线程,如下所示:ThreadprintThread=newThread(printWorker);printThread.Name="LoggerMainThread";printThread.IsBackground=true;printThread.Start();当我的主线程结束时,这个新线程继续工作,尽管它被标记为后台。这可能是什么原因造成的?这个对象持有一个Mutex对象,不确定这可能是原因......有什么想法吗?这是来自printWorker方法的代码:while(loggerIsActive){LogMessag

c# - 使用 C# 在 Windows 8 上获取当前线程 ID

System.Threading.Thread(带有.CurrentThread.ThreadId等)已从WinRT中删除。是否可以在Windows8中获取当前线程ID(用于调试和日志记录目的?)? 最佳答案 参见Environment.CurrentManagedThreadId在Windows商店应用程序中受支持。.NETforWindowsStoreappsSupportedin:Windows8 关于c#-使用C#在Windows8上获取当前线程ID,我们在StackOverfl

c# - RunAsync - 如何等待 UI 线程上的工作完成?

在等待Dispatcher.RunAsync时,继续会在工作安排时发生,而不是在工作完成时发生。我如何等待工作完成?编辑我最初的问题假设过早继续是由API的设计引起的,所以这是真正的问题。当使用异步委托(delegate)等待Dispatcher.RunAsync时,在委托(delegate)代码中使用await时,遇到await时会继续,不是在工作完成时。我如何等待工作完成?编辑2您可能需要分派(dispatch)已在UI线程上的工作的一个原因是解决微妙的时间和布局问题。视觉树中元素的大小和位置的值不断变化是很常见的,为UI的后续迭代安排工作会有所帮助。

c# - IEnumerable<T> 线程安全?

我有一个填充List的主线程.此外,我创建了一个将在不同线程上执行的对象链,需要访问列表。原始列表生成后将永远不会被写入。我的想法是将列表传递为IEnumerable到在其他线程上执行的对象,主要是为了不允许那些实现这些对象的人错误地写入列表。换句话说,如果保证不写入原始列表,多线程使用.Where是否安全?或foreach在IEnumerable上?如果原始集合从未更改,我不确定迭代器本身是否是线程安全的。 最佳答案 IEnumerable无法修改。那么什么可以是非线程安全的呢?(如果您不修改实际的List)。对于非线程安全,您需

c# - 如何在 WPF Canvas 上绘制网格线?

我需要在WPF中的Canvas上构建函数绘制网格线:voidDrawGridLine(doublestartX,doublestartY,doublestepX,doublestepY,doubleslop,doublewidth,doubleheight){//Howtoimplementdrawgridlinehere?}我该怎么做? 最佳答案 您实际上不必使用WPF“绘制”任何东西。如果要绘制线条,请使用适当的几何图形来绘制它们。在您的情况下,它可能真的很简单。您只是在绘制一个网格,因此您可以创建一个DrawingBrush来

c# - 让线程等待 n 个脉冲

我如何等待n个脉冲?…//dosomethingwaiter.WaitForNotifications();我希望上面的线程等待直到被通知n次(被n个不同的线程或n次被同一个线程通知)。我相信有一种计数器可以执行此操作,但我找不到。 最佳答案 看看CountdownEventClass:CountdownEventClassRepresentsasynchronizationprimitivethatissignaledwhenitscountreacheszero.示例:CountdownEventwaiter=newCountd

c# - IOCP 线程 - 澄清?

阅读后thisarticle其中指出:Afteradevicefinishesitsjob,(IOoperation)-itnotifiestheCPUviainterrupt..........However,that“completion”statusonlyexistsattheOSlevel;theprocesshasitsownmemoryspacethatmustbenotified.........Sincethelibrary/BCLisusingthestandardP/InvokeoverlappedI/Osystem,ithasalreadyregisteredt

c# - 多个线程向一个列表添加元素。为什么列表中的项目总是比预期的少?

下面的代码解释了我的问题。我知道列表不是线程安全的。但这背后的“真正”原因是什么?classProgram{staticvoidMain(string[]args){ListstrCol=newList();for(inti=0;i{AddElements(strCol);}).ContinueWith((t)=>{WriteCount(strCol,id.ToString());});}Console.ReadLine();}privatestaticvoidWriteCount(ListstrCol,stringid){Console.WriteLine(string.Format

c# - 线程完成时通知,不锁定调用线程

我正在开发基于NET3.5构建的遗留应用程序。这是我无法改变的约束。我需要执行第二个线程来运行长时间运行的任务而不锁定UI。当线程完成时,我需要以某种方式执行回调。现在我尝试了这个伪代码:Thread_thread=newThread(myLongRunningTask){IsBackground=True};_tread.Start();//waituntilit'sdone_thread.Join();//executefinalizer不锁定UI的第二个选项如下:Thread_thread=newThread(myLongRunningTask){IsBackground=Tru

c# - Excel Interop - 在一个范围内绘制所有边框

我从Microsoft的文档中看到,我可以使用“xlBordersIndex”属性访问单元格的特定边框边缘,例如设置单元格左边缘的边框样式:range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].LineStyle=Excel.XlLineStyle.xlContinuous;但是如果我只想绘制所有边框怎么办?我试过了range.BorderAround2();但这只是在范围本身周围画了一个方框,我明白这一点。于是我尝试了range.Cells.BorderAround2();认为它会遍历范围内的每